
/// MLSDEFORMER source code
/// by Alvaro Cuno, LCG-COPPE-UFRJ 
/// bugs? email-me: alvaroecp@gmail.com
/// January, 2007

#ifndef __DEFORMATION_MESH_RBFGUIDED_H__
#define __DEFORMATION_MESH_RBFGUIDED_H__

#include "../typedefs.h"
#include "../core/constraints.h"
#include "deformationMesh.h"
#include "mesh.h"
#include "RBFfunction.h"

//~ namespace MLS {

/// This class implements a MLS-based deformation where
/// the q* points will be deformed by a RBFfunction
///
class DeformationMesh_RBFguided : public DeformationMesh {
   
public:
   DeformationMesh_RBFguided();
   DeformationMesh_RBFguided(Mesh *m);
   ~DeformationMesh_RBFguided();
   
   void setting(Constraints *constraints);
   
   /// Executes the MLS-deformation induced by the deformed constraints
   ///@param constraints pointer to current constraints positions
   void execute_deformation(Constraints *constraints);
   
private:
   Mesh                  *model;
   RBFfunction           *rbf;
};

//~ } // end MLS namespace

#endif
